#include "widget4.h"
#include <QTextStream>
#include <QDebug>
#include <QSettings>

Widget4::Widget4(QWidget *parent) : QWidget(parent)
{
    init();
    //创建文件夹
    createFolder();

    //写入文件
    //writeFile();

    //文件相关操作
    //aboutFile();

}

void Widget4::init(){
    setWindowTitle("文件操作");
    setGeometry(300, 200, 400, 360);
    logger = new QMessageLogger();
}

//创建文件夹
void Widget4::createFolder(){
    //实例 QLineEdit 控件
    edit = new QLineEdit(this);
    //位置
    edit->setGeometry(QRect(50,50,200,25));
    //值
    edit->setText("/home/denglibin/newFolder");
    //实例按钮
    button = new QPushButton(this);
    //按钮位置、大小
    button->setGeometry(QRect(280,50,80,25));
    //值
    button->setText("创建");
    //按钮事件
    connect(button,SIGNAL(clicked()),this,SLOT(slotCreateFolder()));

}

//写入文件
void Widget4::writeFile(){
    writeEdit = new QLineEdit(this);
    //位置
    writeEdit->setGeometry(QRect(50,50,200,25));
    //值
    writeEdit->setText("/home/denglibin/Qt04.txt");
    //实例
    writeContent = new QLineEdit(this);
    //位置
    writeContent->setGeometry(QRect(50,100,200,25));
    //值
    writeContent->setText("写入文件的内容");

    //实例 button
    writeBtn = new QPushButton(this);
    //位置
    writeBtn->setGeometry(QRect(270,50,80,25));
    //值
    writeBtn->setText("写入");
    //事件
    connect(writeBtn,SIGNAL(clicked()),this,SLOT(slotWriteFile()));

}

void Widget4::aboutFile(){
//删除文件
//    bool b = QFile::remove("/home/denglibin/Qt04.txt");
//    QMessageBox::about(this, "提示",b ? "删除成功" : "删除失败");

//读取文件全部内容
//    QFile file("/home/denglibin/test.txt");
//    if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
//        QTextStream ts(&file);
//        qDebug()<< ts.readAll();
//    }else{
//        logger->warning("打开文件失败");
//    }
//    file.close();

//重命名
//   QFile::rename("/home/denglibin/test.txt","/home/denglibin/demo.txt");

//ini文件读写
//QSettings 构造函数的第一个参数是 ini 文件的路径,第二个参数表示针对 ini 文件
//    QSettings iniFile("/home/denglibin/demo.ini", QSettings::IniFormat);
//    iniFile.setValue("node1/name", "Mary");
//    qDebug() << iniFile.value("node1/name").toString();

 //按行读取
//    QFile  file("/home/denglibin/demo.txt");
//    if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
//        while(!file.atEnd()){
//            QByteArray line = file.readLine();
//            qDebug() << QString(line);
//        }
//        QFileInfo fileInfo(file);
//        qDebug() << fileInfo.path() << ","<< fileInfo.fileName();
//        file.close();
//    }else{
//        qDebug() << "文件打开失败";
//    }
//文件复制
    QFile::copy("/home/denglibin/demo.txt","/home/denglibin/demo2.txt");

}

//创建文件夹槽函数
void Widget4::slotCreateFolder(){
    //实例 QDir
    QDir *folder = new QDir;
    //判断创建文件夹是否存在
    bool exist = folder->exists(edit->text());
    if(exist){
        QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹已经存在!"));
    }else{
        //创建文件夹
        bool ok = folder->mkdir(edit->text());
        //判断是否成功
        if(ok){
            QMessageBox::about(this,tr("创建文件夹"),tr("文件夹创建成功!"));
        }else{
            QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹创建失败!"));
        }

    }
}

/**
 * 写入文件
 * @brief Widget4::slotWriteFile
 */
void Widget4::slotWriteFile(){
    //实例 QFile
    QFile file(writeEdit->text());
    //存在打开,不存在创建
    file.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Append);
    //写入内容,这里需要转码,否则报错。
    QByteArray str = writeContent->text().toUtf8();
    //写入 QByteArray 格式字符串
    file.write(str);
    //提示成功
    QMessageBox::about(this,"提示","写入成功");
    file.close();

}

